#pragma once
#include <iostream>
#include <semaphore.h>

class Sem
{
public:
    // 构造函数
    Sem(int start = 0)
    {
        sem_init(&_sem, 0, start);
    }

    // 析构函数
    ~Sem()
    {
        sem_destroy(&_sem);
    }

    // 申请信号量 -- p操作
    void p()
    {
        sem_wait(&_sem);
    }

    // 发布信号量 -- v操作
    void v()
    {
        sem_post(&_sem);
    }

private:
    sem_t _sem;   // 信号量
};